package org.birrap.ejb;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.birrap.entities.OfertasT;

@Stateless
public class OfertasTBean implements OfertasTBeanLocal {
    
    @PersistenceContext(unitName = "BirrApp-ejbPU")
    private EntityManager em;

    @Override
    public List<OfertasT> findAll() {
       Query query = em.createNamedQuery("OfertasT.findAll");
       
       return (List<OfertasT>)query.getResultList();
    }
    

    @Override
    public OfertasT findByIdOferta(Integer id) {
      OfertasT res = null;
      Query query = em.createNamedQuery("OfertasT.findByIdOferta").setParameter("idOferta",id);
      
      try{
          res = (OfertasT)query.getSingleResult();
      }
      catch (NoResultException e){
          System.out.println("No existe el id");
      }
      return res;
    }

    @Override
    public List<OfertasT> findByDescripcion(String descripcion) {
      List<OfertasT> res = null;
      Query query = em.createNamedQuery("OfertasT.findByDescripcion")
              .setParameter("descripcion","%" + descripcion+ "%");
      
      try{
          res = (List<OfertasT>)query.getResultList();
      }
      catch (NoResultException e){
          System.out.println("No existe la descripcion");
      }
      return res;
    }

    @Override
    public OfertasT insert(OfertasT oferta) {
        return update(oferta);
    }

    @Override
    public OfertasT update(OfertasT oferta) {
        return em.merge(oferta);
    }

        @Override
    public boolean remove(OfertasT oferta) {
        boolean correcto = false;
        int resultado = 0;
        
        Query query = em.createNamedQuery("OfertasT.removeById")
                         .setParameter("idOferta", oferta.getIdOferta());
        
        resultado = query.executeUpdate();
        
        if (resultado > 0)
        {
            correcto = true;
        }
        
        return correcto;
    }

}
